Jsem jen začátečník v kódování Swift. Můj nápad je docela jednoduchý, což je aplikace se dvěma tlačítky. Po kliknutí změní textové pole svůj text. Na Main.StoryBoard přidám textové pole a dvě tlačítka. V souboru ViewController.swift. Píšu takto: importovat UIKit třída ViewController: UIViewController { @IBOutlet slabé var textové pole: UITextField! @IBOutlet slabé tlačítko var: UIButton! @IBOutlet slabé var tlačítko 2: UIButton! @IBAction func action1 (_ odesílatel: UIButton) { textfield.text = "právě jste klikli na button1" } @IBAction func action2 (_ odesílatel: UIButton) { textfield.text = "právě jste klikli na button2" } } Má to být v pořádku. Zobrazí se však chyba, která ukazuje: thread1: signál SIGABRT v souboru AppDelegate.swift řádek: třída AppDelegate: UIResponder, UIApplicationDelegate Co se děje s mým kódem?
2021-01-15 08:17:08
Chcete-li problém vyřešit, nejprve vyčistěte projekt a poté znovu sestavte. Chcete-li projekt vyčistit, přejděte do MenuBar: Produkt -> Vyčistit Poté projekt znovu sestavíte, stačí kliknout na tlačítko Spustit jako obvykle. | Kdykoli máte odpojenou zásuvku, zobrazí se chyba SIGABRT. Klikněte na svůj řadič zobrazení ve scénáři a přejděte na připojení na bočním panelu (symbol šipky). Zjistěte, zda tam máte další zásuvku, duplikát nebo další, která není připojena. Pokud to tak není, možná jste nepřipojili své zásuvky k vašemu kódu správně. Nezapomeňte, že SIGABRT se stane, když se pokoušíte volat zásuvku (tlačítko, pohled, textové pole atd.), Která tam není. | Pro mě to nebyl odbyt. Problém jsem vyřešil přechodem k chybě a přečtením toho, co bylo uvedeno. (Také Noob ..) To byla chyba: A řešení bylo zde: Stačí posunout nahoru na výstupu a chyba bude odhalena. | Běžným důvodem tohoto typu chyby je, že jste mohli změnit název IBOutlet nebo IBAction, můžete to jednoduše zkontrolovat tak, že přejdete ke zdrojovému kódu. Klikněte na main.storyboard a poté vyberte otevřít jako a poté vyberte zdrojový kód otevře se zdrojový kód a pak zkontrolujte, zda existuje název iboutlet nebo pouzection, který jste změnili, pokud existuje, vyberte část a odstraňte ji a poté znovu vytvořte iboutlet nebo ibaction. To by mělo váš problém vyřešit | V mém případě jsem nedostával chybu, jen pád v AppDelegate a musel jsem zrušit zaškrtnutí další možnosti: OS_ACTIVITY_MODE, pak jsem mohl získat skutečný důvod pádu v mém souboru .xib Doufám, že to může pomoci i vám :) | Měl jsem stejný problém. Udělal jsem tlačítko ve scénáři a připojil jsem ho k ViewController a později tlačítko odstranil. Připojení tedy stále existovalo, ale tlačítko nebylo, a tak jsem dostal stejnou chybu jako vy. Opravit: Přejděte na inspektor připojení (šipka v pravém horním rohu ve scénáři) a odstraňte všechna nepoužívaná připojení. | Pokud na to narazíte v Xcode 10, budete muset před sestavením vyčistit. Nebo přepněte na starší systém sestavení. Soubor -> Nastavení pracovního prostoru ... -> Build System: Legacy Build System. | V mém případě nebyl žádný záznam. Moje chyba byla tlačit řadič zobrazení v navigačním zásobníku, který již byl součástí navigačního zásobníku. | Někdy se také stane, když je třeba funkci spustit pouze v hlavním vlákně, takže ji můžete opravit tak, že ji přiřadíte k hlavnímu vláknu následujícím způsobem: - DispatchQueue.main.async { váš kód zde } | Pro mě byla tato chyba proto, že jsem měl připravený krok, který nebyl použitelný pro přechod, který se právě dělal. dlouhý příběh: přepsat func připravit (pro segue: UIStoryboardSegue, sender: Any?) { ať gosetup = segue.destination jako! Aktualizace gosetup.wherefrom = updatestring } Dělo se to pro všechny otroky, když to bylo jen pro jednoho. Takže vytvořím boolean a umístil jsem do něj gosetup. | Toto je velmi častá chyba a může nastat z několika důvodů. Nejběžnější je, když je IBOUTLET / IBACTION připojený k řadiči zobrazení ve scénáři odstraněn ze souboru swift, ale ne ze scénáře. Pokud tomu tak není, použijte protokol na spodním panelu nástrojů, abyste zjistili, o jakou chybu jde, a diagnostikovali ji. K nalezení chyby můžete použít zarážky a ladění. Chcete-li zjistit, jak chybu opravit, použijte tento článek, který jsem našel na Googlu: https://rayaans.com/fixing-the-notorious-sigabrt-error-in-xcode | V mém případě jsem pro provádění vyhledávání používal RxSwift. Značně jsem stále používal sdílenou instanci konkrétní třídy uvnitř metody onNext, což ji pravděpodobně znemožnilo (Mutex). Zajistěte, aby se s takovými případy zacházelo opatrně, pouze pokud je to nezbytně nutné. V mém případě jsem předem použil několik proměnných, abych bezpečně (a postupně) uložil návratové hodnoty metod sdílené instance a znovu je použil uvnitř bloku onNext. | Měl jsem stejný problém. V mém případě jsem soubor přepsal GoogleService-Info.plist na této cestě: Platforma \ ios \ YOUR_APP_NAME \ Resources \ Resources V mém případě byly soubory přítomny bez údajů. | Vysoce aktivní otázka. Získejte 10 reputace, abyste mohli odpovědět na tuto otázku. Požadavek na reputaci pomáhá chránit tuto otázku před spamem a neodpovědností. Toto není odpověď, kterou hledáte? Projděte si další otázky se značkou ios swift nebo se zeptejte na vlastní otázku.